/*
 * Copyright [2022] [https://www.xiaonuo.vip]
 *
 * Snowy采用APACHE LICENSE 2.0开源协议，您在使用过程中，需要注意以下几点：
 *
 * 1.请不要删除和修改根目录下的LICENSE文件。
 * 2.请不要删除和修改Snowy源码头部的版权声明。
 * 3.本项目代码可免费商业使用，商业使用请保留源码和相关描述文件的项目出处，作者声明等。
 * 4.分发源码时候，请注明软件出处 https://www.xiaonuo.vip
 * 5.不可二次分发开源参与同类竞品，如有想法可联系团队xiaonuobase@qq.com商议合作。
 * 6.若您的项目无法满足以上几点，需要更多功能代码，获取Snowy商业授权许可，请在官网购买授权，地址为 https://www.xiaonuo.vip
 */
package vip.xiaonuo.dev.modular.job.task;

import cn.hutool.core.date.DateUtil;
import com.alibaba.fastjson.JSONObject;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import vip.xiaonuo.common.timer.CommonTimerTaskRunner;
import vip.xiaonuo.dev.modular.job.entity.Tousu;
import vip.xiaonuo.dev.modular.job.mapper.TousuJobMapper;
import vip.xiaonuo.dev.modular.job.util.HttpApiUtil;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;

/**
 * 定时器的一个示例
 *
 * @author xuyuxiang
 * @date 2022/8/5 15:52
 **/
@Slf4j
@Component
public class TousuNobelongJobTimerTaskRunner implements CommonTimerTaskRunner {

    @Autowired
    TousuJobMapper tousuMapper;

    /**
     * 获取投诉数据逻辑：
     * 1.调用登陆接口，获取cookie
     */
    @Override
    public void action(String extJson) {
        log.info("抓取投诉数据定时任务开始执行。。。");
        // 调用http请求获取网页内容
        String loginUrl = "http://183.247.194.62:63636/login";
        String detailUrl = "http://183.247.194.62:63636/records/";
        Map<String, String> map = tousuMapper.getDhbaAP();
        String username ="";
        String password ="";
        if (map.containsKey("username") && map.containsKey("password")){
            username = map.get("username");
            password = map.get("password");
        }
        if(username.isEmpty()){
            username = "a15558558858";
            password = "Aa123456";
        }
        String cookie = HttpApiUtil.getTousuLogin(loginUrl,username,password);
        // 获取需要查询的投诉列表
        List<Tousu> tousuList = tousuMapper.selectNoBelongTousu();
//        List<Tousu> tousuList = new ArrayList<>();
//        Tousu tousu1 = new Tousu();
//        tousu1.setId("1944139738387054593");
//        tousu1.setComplaintId("Z084bzB0TGdtZzRFc3pObldRcFNxZz09");
//        tousuList.add(tousu1);
        ExecutorService executor = Executors.newFixedThreadPool(5);
        // 循环根据id获取detail
        for (Tousu tousu : tousuList) {
            executor.execute(() -> {
                String id = tousu.getComplaintId();
                JSONObject detail = HttpApiUtil.getTousuDetail(detailUrl + id, cookie);
                // 将detail更新到数据库
                if (detail != null && !detail.isEmpty()) {
                    String complained_province = detail.getString("complained_province");
                    String complained_operator = detail.getString("complained_operator");
                    if (complained_province !=null && !complained_province.isEmpty()
                            && complained_operator != null && !complained_operator.isEmpty()){
                        tousu.setAccusedProvince(complained_province);
                        tousu.setAccusedOperator(complained_operator);
                        tousu.setBelongTime(DateUtil.date());
                        tousuMapper.updateTousuNoBelong(tousu);
                    }
                }
            });
        }
        executor.shutdown();
        try {
            executor.awaitTermination(Long.MAX_VALUE, TimeUnit.NANOSECONDS);
        } catch (InterruptedException e) {
            log.error("线程池等待被中断", e);
        }
    }
}
